package com.nicolas.pattern.observer;

import java.util.ArrayList;

/**
 *  Subject（目标）：目标又称为主题，它是指被观察的对象。
 *  在目标中定义了一个观察者集合，一个观察目标可以接受任意数量的观察者来观察，
 *  它提供一系列方法来增加和删除观察者对象，同时它定义了通知方法notify()。
 *  目标类可以是接口，也可以是抽象类或具体类。
 * @author cuilj --2017年2月13日 下午5:01:53
 *
 */
public abstract class AllyControlCenter {
	protected String allyName; //战队名称  
    protected ArrayList<Observer> players = new ArrayList<Observer>(); //定义一个集合用于存储战队成员  
      
    public void setAllyName(String allyName) {  
        this.allyName = allyName;  
    }  
      
    public String getAllyName() {  
        return this.allyName;  
    }  
      
    //注册方法  
    public void join(Observer obs) {  
        System.out.println(obs.getName() + "加入" + this.allyName + "战队！");  
        players.add(obs);  
    }  
      
    //注销方法  
    public void quit(Observer obs) {  
        System.out.println(obs.getName() + "退出" + this.allyName + "战队！");  
        players.remove(obs);  
    }  
      
    //声明抽象通知方法  
    public abstract void notifyObserver(String name);  
}
